/**
 * 
 */
package com.yidu.erp.action.BeyondModel;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.yidu.common.Pages;
import com.yidu.common.SsmMessage;
import com.yidu.erp.model.BeyondModel;
import com.yidu.erp.model.ZtreeModel;
import com.yidu.erp.service.BeyondModel.ModelService;


/**
 * 功能模块action
 * @author wws
 * @date  2017年11月7日
 */
@Controller
@RequestMapping("model")
public class BeyondModelAction {
	
	@Resource
	private ModelService modelService ;
	
	
	/**
	 * 显示模块信息
	 * @param page
	 * @param limit
	 * @param mxmodel
	 * @return map
	 */
	@RequestMapping("/getAllmodel")
	@ResponseBody
	public Map<String, Object> getAllmodel(int page,int limit,BeyondModel beyondModel){
		Pages pages = new Pages();//新建一个分页对象
		if(page>0){//判断传过来的页数是否有值
			pages.setCurPage(page);//给分页对象赋值当前页数
		}
		pages.setMaxResult(limit);//给分页对象赋值每页显示最大行数
		Map<String, Object> modelmap = new HashMap<String, Object>();//新建一个模块map
		modelmap.put("modelName", beyondModel.getModelName());//给map赋值模块名称
		modelmap.put("modelCode", beyondModel.getModelCode());//给map赋值模块访问地址
		modelmap.put("firstRows", pages.getFirstRows());//给map赋值分页开始行数
		modelmap.put("maxResult", pages.getMaxResult());//给map赋值每页显示最大行数
		List<BeyondModel> modelList = modelService.getAllmodel(modelmap);//新建一个模块集合调用查询所有模块方法
		//for循环
		for (Iterator iterator = modelList.iterator(); iterator.hasNext();) {
			BeyondModel model = (BeyondModel) iterator.next();
			BeyondModel m=modelService.selectByPrimaryKey(model.getModelSumid());//新建一个模块对象，调用根据循环出来的模块的上级id查询方法
			if(m!=null){//判断模块对象不为null
				model.setModelSjname(m.getModelName());//有值就把模块对象的模块名赋给循环模块对象的上级模块名
			}else{
				model.setModelSjname("");//没有就给循环模块对象的上级模块名赋值空
			}
		}
		Map<String, Object> map = new HashMap<String, Object>();//新建一个map
		int rows = modelService.findAllRowCount(modelmap);//根据模块map查询总行数
		map.put("data", modelList);//放模块集合
		map.put("count",rows);//放显示几行
		map.put("code", 0);//放第几行开始
		map.put("msg", "");//放消息
		
		return map;
		
	}
	
	/**
	 * 删除方法
	 * @param m
	 * @return
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public SsmMessage delete(BeyondModel model){
		SsmMessage mes=new SsmMessage();//新建一个消息类
		int rows=modelService.delete(model.getModelId());//根据模型的模块id删除返回行数
		if(rows>0){//判断是否有影响行数
			mes.setState(SsmMessage.SUCCESS);//消息状态赋值给消息对象
			mes.setMes(SsmMessage.SUCCESS_MES);//消息信息赋值给消息对象
			
		}else{
			mes.setState(SsmMessage.ERROR);//消息状态赋值给消息对象
			mes.setMes(SsmMessage.ERROR_MES);//消息信息赋值给消息对象
			
		}
		return mes;//返回消息对象

	}
	
	
	/**
	 * 根据id查询数据
	 * @param modelId
	 * @return
	 */
	@RequestMapping("/showUpdate")
	@ResponseBody
	public BeyondModel showUpdate(String modelId){
		BeyondModel model =  modelService.selectByPrimaryKey(modelId);//根据模块id查询返回模块对象
		return model;//返回模块对象
	}
	
	/**
	 * 增加或者修改
	 * @param m
	 * @return mes
	 */
	@RequestMapping("/addOrUpdate")
	@ResponseBody
	public SsmMessage addOrUpdate(BeyondModel model){
		
		SsmMessage mes=new SsmMessage();//新建一个消息对象
		String modelId=model.getModelId();//新建一个String，赋值模块的模块id
		if(modelId=="" || modelId==null){//判断模块id为null或者为空
			model.setIsva("1");//给模块状态赋值有效
			int rows=modelService.insertSelective(model);//根据模块调用增加方法，返回行数
			if(rows>0){//判断是否有影响行数
				mes.setState(SsmMessage.SUCCESS);//消息状态赋值给消息对象
				mes.setMes(SsmMessage.SUCCESS_MES);//消息信息赋值给消息对象
				
			}else{
				mes.setState(SsmMessage.ERROR);//消息状态赋值给消息对象
				mes.setMes(SsmMessage.ERROR_MES);//消息信息赋值给消息对象
				
			}
			
		}else{
			int rows=modelService.updateByPrimaryKeySelective(model);//根据模块调用修改方法，返回行数
			
			
			if(rows>0){//判断是否有影响行数
				mes.setState(SsmMessage.SUCCESS);//消息状态赋值给消息对象
				mes.setMes(SsmMessage.SUCCESS_MES);//消息信息赋值给消息对象
				
			}else{
				mes.setState(SsmMessage.ERROR);//消息状态赋值给消息对象
				mes.setMes(SsmMessage.ERROR_MES);//消息信息赋值给消息对象
				
			}
			
		}
		
		return mes;//返回消息对象
	}
	
	
	/**
	 * 角色分配模块方法
	 * @return
	 */
	@RequestMapping("/showmodelAll")
	@ResponseBody
	public List<BeyondModel> showmodelAll(){
		List<BeyondModel> list = modelService.showmodelAll();//新建一个模块集合，调用角色分配模块方法
		return list;//返回模块集合
	}
	
	/**
	 * 模块增加修改时显示上级模块ID
	 * @return
	 */
	@RequestMapping("/showmodeloneId")
	@ResponseBody
	public List<BeyondModel> showmodeloneId(){
		List<BeyondModel> list = modelService.showmodeloneId();//新建一个模块集合，调用模块增加修改时显示上级模块ID方法
		return list;//返回模块集合
	}
	
	
	/**
	 * 树模型所需要的值
	 * @return
	 * @throws JsonProcessingException
	 */
	@RequestMapping("/ztreemodel")
	@ResponseBody
	public List<ZtreeModel> ztreemodel() throws JsonProcessingException{
		//新建一个树模型集合
		List<ZtreeModel> ztreeModel = new ArrayList<ZtreeModel>();
		//调用得到树模型所需值方法，返回模块对象集合
		List<BeyondModel> model = modelService.getztreemodule();
		//循环模块集合长度
		for (int i = 0; i < model.size(); i++) {
			//新建一个树模型对象
			ZtreeModel zm = new ZtreeModel();
			//新建一个模块对象，并通过get取得模块集合里值
			BeyondModel bm = model.get(i) ;
			
			System.out.println("模块id==="+bm.getModelId());
			//将模块对象中的模块ID赋值到树模型对象的菜单ID
			zm.setId(bm.getModelId());
			//将模块对象中的上级模块ID赋值到树模型对象的父菜单id
			zm.setpId(bm.getModelSumid());
			//将模块对象中的模块名赋值到树模型对象的菜单名
			zm.setName(bm.getModelName());
			
			//将树模型对象封装到树模型集合里
			ztreeModel.add(zm);
		}
		//返回树模型集合
		return ztreeModel;
		
	}
	
}
